Software testing is a crucial part in the development of a software application. Software testing requires test cases that can discover program errors quickly and thoroughly. A comprehensive test case may take an enormous amount of time and expense to develop and maintain. Test cases may be written in a traditional general purpose programming language. These test cases are dependent on the code implementation which may be difficult and costly to maintain over time. Alternatively, domain specific languages, scripting languages, and declarative languages may be used to create test cases in a manner where the test cases are independent of the underlying software implementation. However, these languages may lack the broad programming constructs and capabilities needed to construct quality written test cases for certain types of applications.